/******************************************************************************
 *  _____     _____
 *  \  __\    \  __\
 *   \ \_\\    \ \_\\
 *    \  __\SS  \  __\roject
 *     \_\       \_\
 *
 * Mateusz Maciąg, Rafał Urbański
 * Komputerowe Systemy Sterowania
 *****************************************************************************/

#ifndef SIMULATORMANAGER_H
#define SIMULATORMANAGER_H

#include "ISimulator.h"

// Przestrzeń nazw
namespace RafMat
{
namespace SimInterface
{

/**
    Klasa statyczna przechowująca obiekt symulatora.
    Symulator tworzony jest tylko raz i wykorzystywany
    na potrzeby interfejsu użytkownika.
*/
class SimulatorManager
{
public:

    /**
        Zwraca instancję symulatora.
    */
    static ISimulatorSPtr getSimulator();

private:
    SimulatorManager() {}

    static ISimulatorSPtr m_simInstance; ///< Instancja symulatora.
};


}   // SimInterface namespace
}   // RafMat namespace

#endif // SIMULATORMANAGER_H
